package Presentation;

import java.util.Calendar;
import java.util.Date;
import javax.swing.JPanel;
     
/**
 * Cette classe permet d'afficher un datechooser dans l'interface et de récupérer son contenu
 */
public class SelecteurDate extends JPanel {

    /**
     * Constructeur qui affiche les composants
     */
    public SelecteurDate() {
        initComponents();
    }

    /**
     * Initialise les composants graphiques
     */
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        mydatechooser = new com.toedter.calendar.JDateChooser();
        mydatechooser.getDateEditor().setEnabled(false);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);

        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)                       
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(mydatechooser, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE))
            ))
        );

        jPanel1Layout.setVerticalGroup(
             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(jPanel1Layout.createSequentialGroup()
                   .addComponent(mydatechooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
             )
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                )
        );
       layout.setVerticalGroup(
           layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
           .addGroup(layout.createSequentialGroup()
               .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
               )
       );

   }

    /**
     * @return le jour sélectionné
     */
    public int getDate(){
        if(mydatechooser.getCalendar()!=null){
            return mydatechooser.getCalendar().get(Calendar.DATE);
        } else{
            return -1;
        }
    }
       
    /**
     * @return le mois sélectionné
     */
    public int getMonth(){
        if(mydatechooser.getCalendar()!=null){
            //+1 car la méthode get(MONTH) renvoie 0 pour janvier, 1 pour février etc
            return mydatechooser.getCalendar().get(Calendar.MONTH )+1;
        } else{
            return -1;
        }
    }
       
    /**
     * @return l'année sélectionnée
     */
    public int getYear(){
        if(mydatechooser.getCalendar()!=null){
            return mydatechooser.getCalendar().get(Calendar.YEAR);
        } else{
            return -1;
        }
    }
    
    /**
     * @return la date sélectionnée sous forme d'objet Date
     */
    public Date getFormatedDate(){
        if(mydatechooser.getCalendar()!=null){
            return mydatechooser.getCalendar().getTime();
        } else{
            return null;
        }
    }
    
    private javax.swing.JPanel jPanel1;
    private com.toedter.calendar.JDateChooser mydatechooser;
    
    @Override
    @Deprecated
    public void disable(){
        mydatechooser.getCalendarButton().setEnabled(false);
    }
    
    @Override
    @Deprecated
    public void enable(){
        mydatechooser.getCalendarButton().setEnabled(true);
    }
    
    /**
     * Active / désactive la possibilité de se servir du sélecteur
     * @param state true ou false = nouvel état de sélectionnabilité du champ
     */
    @Override
    public void setEnabled(boolean state){
        mydatechooser.getCalendarButton().setEnabled(state);
        mydatechooser.getJCalendar().setEnabled(state);
    }
    
    /**
     * TODO : rendre fonctionnelle
     * Affiche / cache le sélecteur
     * @param state true = visible, false = caché
     */
    @Override
    public void setVisible(boolean state){
        super.setVisible(state);
        mydatechooser.getCalendarButton().setVisible(state);
        mydatechooser.getJCalendar().setVisible(state);
        mydatechooser.getDateEditor().getUiComponent().setVisible(state);
    }
    
    /**
     * Permet de pré-sélectionner une date
     * @param d la date à choisir
     */
    public void setDate(Date d){
        mydatechooser.setDate(d);
    }
}